package panda.server;

import java.util.ArrayList;

import panda.syntax.SelectStm;

public class PandaSelectGetColumn {
	
	public static boolean isBlank(char s) {
		return s =='\n' || s =='\r' || s == '\t' || s ==' ';
	}

	public static ArrayList<String> getColumns(String s, SelectStm select) {
		ArrayList<String> cl=new ArrayList<String>();

		if (select.attrs == null) return null;
		
		int selectAttrCount=select.attrs.size();
		
		int sid = Math.max(s.toLowerCase().indexOf("select") + 6, s.toLowerCase().indexOf("distinct") + 8);
		
		int fid = s.toLowerCase().lastIndexOf("from");
		
		s = s.substring(sid, fid);
//		System.out.println(s);
		
		int count = 0;
		
		String ns = "";
		for (int i = 0; i < s.length(); i++) {
			
			if (s.charAt(i) == '(') {
				count ++;
				ns = ns + s.charAt(i);
			}
			else if (s.charAt(i) == ')') {
				count --;
				ns = ns + s.charAt(i);
			}
			else if (count == 0 && (s.charAt(i) == ',' || i == s.length() - 1)) {
				
				int ind = 0;
				int end = ns.length() - 1;
				while (isBlank(ns.charAt(ind))) ind ++;
				while (isBlank(ns.charAt(end))) end --;
				
				cl.add(ns.substring(ind, end + 1));
				ns = "";
			}
			else
				ns = ns + s.charAt(i);
			
		}
		
		return cl;
//		
//		int size=s.length();
//		int count=0;
//		int i=0;
//		boolean selectEliminated=false, distinctEliminated=false;
//		String temp="";
//		while (i<size && columnList.size()<selectAttrCount) {
//			System.out.print(s.charAt(i));
//			if (s.charAt(i)=='(' && count==0) {
//				temp="("; 
//				i++;
//				count++;
//				while (i<size && count>0) {
//					if (s.charAt(i)==')') 
//						count--;
//					if (s.charAt(i)=='(') 
//						count++;
//					temp+=s.charAt(i);
//					i++;
//				}
//			}
//			else {
//				if (s.charAt(i)!='\n' && s.charAt(i)!='\r' && s.charAt(i)!='\t' && s.charAt(i)!=',' && s.charAt(i)!=' ') {
//					temp+=s.charAt(i);
//					//						System.out.println("temp="+temp);
//					if (temp.toLowerCase().contentEquals("select") && !selectEliminated) {
//						temp="";
//						selectEliminated=true;
//					}
//					if (temp.toLowerCase().contentEquals("distinct") && !distinctEliminated && columnList.size()==0) {
//						temp="";
//						distinctEliminated=true;
//					}
//
//				}
//				else {
//					//						System.out.println("temp="+temp);
//					columnList.add(temp);
//					temp="";
//				}
//				i++;
//			}
//		}
//	}
}

}
